package com.snail.model.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * 帖子表
 * @TableName biz_post
 */
@TableName(value ="biz_post")
@Data
public class BizPost {
    /**
     * 帖子唯一标识（自增ID）
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 发帖用户ID（关联用户表user.id）
     */
    private Long userId;

    /**
     * 战队ID
     */
    private Integer teamId;

    /**
     * 帖子标题
     */
    private String title;

    /**
     * 帖子内容（支持富文本/Markdown）
     */
    private String content;

    /**
     * 封面图URL（可选）
     */
    private String coverImage;

    /**
     * 标签ID集合（逗号分隔，如"1,3,5"）
     */
    private String tagIds;

    /**
     * 帖子状态：0-草稿；1-已发布；2-审核中；3-已下架；4-被删除
     */
    private Integer status;

    /**
     * 浏览量
     */
    private Integer viewCount;

    /**
     * 点赞数
     */
    private Integer likeCount;

    /**
     * 评论数
     */
    private Integer commentCount;

    /**
     * 分享数
     */
    private Integer shareCount;

    /**
     * 是否置顶：0-否；1-是
     */
    private Integer isTop;

    /**
     * 发布时间（状态变为“已发布”时记录）
     */
    private Date publishTime;

    /**
     * 是否精华帖：0-否；1-是
     */
    private Integer isEssence;

    /**
     * 创建时间（草稿/发布时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 最后更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 删除时间（逻辑删除标记）
     */
    private Integer deleted;

    @TableField(exist = false)
    private String username;


    @TableField(exist = false)
    private String avatar;
}